#pragma once
#include "Globals.hpp"
#include "Colors.hpp"
#include "Vector2D.h"

/* 
	Purpose:
		To display primitives on the screen, such as squares.  More to come later.

	Type: Singleton

*/


#define DrawPrimitives GLPrimitives::Instance()

class GLPrimitives
{
private:
	GLPrimitives();
	GLPrimitives(const GLPrimitives&);
	GLPrimitives& operator =(const GLPrimitives&);
	~GLPrimitives() {};



public:
	static GLPrimitives* Instance();

	void DrawRectangle(int x1, int y1, int x2, int y2, OGL_Color color);
	void DrawRectangle(int x1, int y1, int x2, int y2, OGL_Color color, float alpha, float rotation = 0.0f);

	void DrawLine(int x1, int y1, int x2, int y2, OGL_Color color);
	void DrawCircle(int x, int y, int r, OGL_Color = black);

	void DrawPolygon(std::vector<Vector2D> points);

};
